perm filename CMUIO.FAI[COL,LCS] blob sn#104310 filedate 1974-05-25 generic text, type T, neo UTF8
	TITLE CMUIO
	INTERNAL PUTFIL,FASTOUT,FINFIL
	INTERNAL ZBIT,GETTAP,TOTAPE,FINTAP,BACKSP,USETI
	EXTERNAL CMUALC
	CH←12
	CH2←11

;CALL PUTFIL(<FILE>)

PUTFIL:	0
	MOVE 0,@0(16)
	MOVEM FILNAM
	JSA 16,INTFIL
	MOVE 0,DIR	;IS FILE NAME 'MUSIC'
	CAME 0,[SIXBIT/MUSIC/]
	JRST .+3	;NO -- DO NORMAL ENTER 
	JSA 16,CMUALC	;YES -- DO EXTENDED ENTER TO
	JRA 16,1(16)	;GET 1000 BLOCKS
	MOVE 0,[SIXBIT/DMD/]
	MOVEM 0,DIR+1
	SETZM DIR+2
	SETZM DIR+3
	ENTER CH,DIR
	0
	JRA 16,1(16)


INTFIL:	0
	MOVEI REGS
	BLT REGS+3
	INIT CH,17
	SIXBIT/NICK/
	0
	JRST	NONICK
	OUTSTR	[ASCIZ/
WRITING SAMPLE ON MTA: RCDFLG SHOULD BE -1 AND BIGBIT 0.
SAMPLES CAN THEN BE DUMPED FROM MTA: (MAX 10K)
!!! THE .R PLAYS PROGRAM MUST BE USED !!!
/]
	JRST NICK
NONICK:	INIT CH,17
	SIXBIT/DSK/
	0
	0
NICK:	MOVE 0,FILNAM#
	MOVEM 0,FN#
	MOVE 1,[POINT 7,FN]
	MOVE 2,[POINT 6,DIR]
	SETZM DIR
	MOVEI 3,5
INTF1:	ILDB 0,1
	CAIN 0," "
	JRST INTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,INTF1
INTF2:	HRLZI REGS
	BLT 3
	JRA 16,0(16)

INTFI2:	0
	MOVEI REGS
	BLT REGS+3
	INIT CH2,617
	SIXBIT/MTA0/
	0
	0
	MOVE 0,FILNA2#
	MOVEM 0,FN2#
	MOVE 1,[POINT 7,FN2]
	MOVE 2,[POINT 6,DIR]
	SETZM DIR
	MOVEI 3,5
	JRST INTF1


DIR:	BLOCK 4

;CALL FASTOUT(<ARRAY>,<NO. OF WORDS>)

FASTOUT: 0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	OUTPUT CH,COM
	STATZ CH,740000
	0
	JRA 16,2(16)



;CALL FINFIL

FINFIL:	0
	MOVE 0,DIR	;IS FILE NAME 'MUSIC'
	CAME 0,[SIXBIT/MUSIC/]
	JRST .+3	;NO -- DO NORMAL CLOSE
	CLOSE CH,4	;YES -- CLOSE BUT DON'T DE-ALOCATE
	SKIPA
	CLOSE CH,0
	STATZ CH,740000
	0
	RELEASE CH,0
	JRA 16,0(16)



	;'CH' IS USED IN GETTAP, TOTAPE
	;'CH2' "  "    " MTA1, INMTA1, GETFI2, FASTI2


; CALL USETI(WDS/128)

USETI:	0
	MOVE 1,@(16)
	USETI CH2,(1)
	JRA 1,1(16)


;CALL GETTAP

GETTAP:	0	;USES  TOTAPE, CH.  READS OR WRITES MTA0.
	INIT CH,617
	SIXBIT/MTA0/
	0
	HALT
	JRA 16,0(16)

;CALL TOTAPE(<ARRAY>,<NO.OF WORDS>)  WRITES ON MAGTAPE

TOTAPE:	0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	OUTPUT CH,COM
	STATZ CH,740000
	0
	JRA 16,2(16)

; CALL FINTAP

FINTAP:	0
	CLOSE CH,0
	STATZ CH,740000
	0
	RELEASE CH,0
	JRA 16,0(16)

; CALL BACKSP

BACKSP:	0
	INIT CH,617
	SIXBIT/MTA0/
	0
	HALT
	MTAPE CH,7
	JRA 16,0(16)

; CALL ZBIT(<INPUT ARRAY>,<OUTPUT ARRAY>)
;              (256 WDS)     (512 WDS)

ZBIT:	0
	MOVE 2,(16)
	MOVE 1,1(16)
	HRLI 2,-=256

LOOP:	HLRE 0,(2)
	FSC 0,233	;FLOAT IT
	MOVEM 0,(1)	; GETS 512 18-BIT SAMPLES OUT OF 256 WDS.
	HRRE 0,(2)
	FSC 0,233
	MOVEM 0,1(1)
	ADDI 1,2
	AOBJN 2,LOOP
	JRA 16,1(16)


	BLKS←=1
REGS:	BLOCK 20

COM:	OCT 0,0
;;;COM1:	0
BLKNUM:	0

END